package com.tengju.data.domain.model.service;


import com.tengju.data.domain.model.report.AchievementBonusCalMidInfo;
import com.tengju.data.domain.model.report.AchievementBonusCalTypeEnum;
import com.tengju.data.domain.model.report.MarketReport;
import com.tengju.data.domain.model.template.SubsidyTemplate;
import com.tengju.data.domain.model.user.UserId;
import com.tengju.data.domain.model.user.UserIdCode;
import com.tengju.data.domain.model.user.UserStarFeature;
import com.tengju.data.domain.shared.tree.Forest;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

public interface MarketBonusCalService {

    Forest<MarketReport> initMarketReport(LocalDateTime logTime, Integer month, AchievementBonusCalTypeEnum calType);

    void saveAchievementBonus(Forest<MarketReport> marketReportForest, int version);

    Forest<MarketReport> initAchievementBonusReport(LocalDateTime logTime,
                                                    Integer month,
                                                    List<AchievementBonusCalMidInfo> achievementBonusCalMidInfoList,
                                                    List<UserStarFeature> userStarFeatureList,
                                                    List<SubsidyTemplate> subsidyTemplateList,
                                                    Map<UserIdCode, UserId> userIdMap);

    void saveAchievementBonusRisk(Forest<MarketReport> marketReportForest, int version);

    void calMarketBonus(Forest<MarketReport> marketReportForest);

}
